1793E - Velepin and Marketing - CodeForces Solution


binary search data structures dp greedy sortings two pointers *2600

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;


int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); 
	
	int T;
	T = 1;
	while(T--){
		int n;
		cin >> n;
		vector<int> a(n);
		for(int i = 0; i < n; ++i){
			cin >> a[i];
		}
		sort(a.begin(), a.end());
		vector<int> f(n + 1, -1e9);
		vector<int> ans(n + 1);
		
		f[0] = 0;
		for(int i = 1; i <= n; ++i){
			if(i >= a[i - 1]){
				f[i] = f[i - a[i - 1]] + 1;
				ans[f[i] + n - i] = max(ans[f[i] + n - i], i);
			}else{
				ans[n - a[i - 1] + 1] = max(ans[n - a[i - 1] + 1], i);
			}
			f[i] = max(f[i], f[i - 1]);
		} 
		
		for(int i = n - 1; i >= 2; --i){
			ans[i] = max(ans[i], ans[i + 1]);
		}
		
		int q;
		cin >> q;
		while(q--){
			int k;
			cin >> k;
			cout << ans[k] << '\n';
		}
		
	}
}


Comments

Submit
0 Comments
More Questions

543. Diameter of Binary Tree
124. Binary Tree Maximum Path Sum
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
501A - Contest
160A- Twins
752. Open the Lock
1535A - Fair Playoff
1538F - Interesting Function
1920. Build Array from Permutation
494. Target Sum
797. All Paths From Source to Target
1547B - Alphabetical Strings
1550A - Find The Array
118B - Present from Lena
27A - Next Test
785. Is Graph Bipartite
90. Subsets II
1560A - Dislike of Threes
36. Valid Sudoku
557. Reverse Words in a String III
566. Reshape the Matrix
167. Two Sum II - Input array is sorted
387. First Unique Character in a String
383. Ransom Note
242. Valid Anagram
141. Linked List Cycle
21. Merge Two Sorted Lists
203. Remove Linked List Elements
733. Flood Fill
206. Reverse Linked List